Open-code our own getopt mutant since standards-impaired OSes don't have it.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Thu, 15 Aug 2002 05:28:35 +0000 (05:28 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Thu, 15 Aug 2002 05:28:35 +0000 (05:28 +0000)
gpsbabel/main.c

index c10b2c8b9c73277abb17e5d2da0053adf299017e..4288e713d40b14ea710680b3a12581162001beaf 100644 (file)
@@ -19,7 +19,6 @@
 
 
 #include "defs.h"
-#include <unistd.h>
 
 void
 usage(const char *pname)
@@ -29,10 +28,13 @@ usage(const char *pname)
        disp_vecs();
 }
 
+
+
 int
 main(int argc, char *argv[])
 {
        int c;
+       int argn;
        ff_vecs_t *ivecs = NULL;
        ff_vecs_t *ovecs = NULL;
        char *fname = NULL;
@@ -41,7 +43,25 @@ main(int argc, char *argv[])
        waypt_init();
        route_init();
 
-       while (( c = getopt(argc, argv, "?hi:o:f:F:")) != EOF) {
+       /*
+        * Open-code getopts since POSIX-impaired OSes don't have one.
+        */
+       for (argn = 1; argn < argc; argn++) {
+               char *optarg;
+
+               if (argv[argn][0] != '-') {
+                       fatal ("argument '%s' not understood",argv[argn]);
+               }
+
+               if (argv[argn][1] == '?' || argv[argn][1] == 'h') {
+                       usage(argv[0]);
+                       exit(0);
+               }
+
+               c = argv[argn][1];
+               optarg = argv[argn+1];
+               argn++;
+
                switch (c) {
                        case 'i': 
                                ivecs = find_vec(optarg);